class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int left, int right) {
        ListNode *yummy=new ListNode(0);
        yummy->next=head;
        ListNode *drop=yummy;
        for(int i=0;i<left-1;i++){
            drop=drop->next;
        }
        ListNode *a=drop->next;
        ListNode *b=a->next;
        for(int i=left;i<right;i++){
            ListNode *temp=b->next;
            b->next=a;
            a=b;
            b=temp;
        }
        drop->next->next=b;
        drop->next=a;
        return yummy->next;
    }
};